package cn.ch.basic.controller;

import cn.ch.basic.dto.RegisterDto;
import cn.ch.basic.exception.BusinessException;
import cn.ch.basic.service.IVerifyCodeService;
import cn.ch.basic.util.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/verifyCode")

public class VerifyCodeController {

    @Autowired
    private IVerifyCodeService verifyCodeService;//注入Service

    /**
     * 获取图形验证码
     * @param key
     * @return
     */
    //设置接口路径
    @GetMapping("/image/{key}") //要携带一个值，占位符
    public AjaxResult imageCode(@PathVariable("key") String key) { //使用@PathVariable来获取请求符中占有的值
        try {
            //1.生成base64编码之后的String类型的图片
            String base64String = verifyCodeService.imageCode(key);
            //2.把base64编码之后的String类型的图片返回到前段
            return AjaxResult.me().setResultObj(base64String);
        } catch (BusinessException e) {//捕获异常，这里面需要自己定义的异常来表示
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage(e.getMessage());//操作失败，报错
        }catch (Exception e) {//这里一般属于系统异常，是系统的问题，与代码无关
            e.printStackTrace();
            return AjaxResult.me().setMessage("系统繁忙，请稍后再试！！！");
        }
    }

    /**
     * 获取手机短信验证码
     * @param registerDto
     * @return
     */
    @PostMapping("/smsCode") //要携带一个值，占位符
    public AjaxResult smsCode(@RequestBody RegisterDto registerDto) { //使用@PathVariable来获取请求符中占有的值
        try {
            verifyCodeService.smsCode(registerDto);//获取手机验证码
            return AjaxResult.me();
        } catch (BusinessException e) {//捕获异常，这里面需要自己定义的异常来表示
            e.printStackTrace();
            return AjaxResult.me().setSuccess(false).setMessage(e.getMessage());//操作失败，报错
        }catch (Exception e) {//这里一般属于系统异常，是系统的问题，与代码无关
            e.printStackTrace();
            return AjaxResult.me().setMessage("系统繁忙，请稍后再试！！！");
        }
    }
}
